Memory within a computer system is typically associated with addressable semiconductor memory, or integrated circuits utilized as the primary storage of the computer system. There are two main types of semiconductor memory, volatile and non-volatile. Non-volatile memory is typically flash memory in current systems and is often utilized as secondary memory. Volatile memory, or main memory, is often a dynamic random-access memory (DRAM) based architecture. Data flows back and forth between the processor and the DRAM main memory over memory buses. Continuously increasing processor speeds and growing main memory requirements are contributing to performance and energy bottlenecks in computing systems.
DRAM devices employ row buffers (at least one per bank) in which memory reads and writes take place. Accesses to a DRAM row that is different from the one in the row buffer requires closing the currently buffered or open row and activating the requested row, which is referred to as a row-buffer conflict and incurs performance and energy penalties. DRAM row-buffer conflicts limit the optimal exploitation of the available memory bandwidth and increase the memory-access latencies due to closing and activating DRAM rows. Memory-access conflicts are further increased by sub-optimal physical-address allocations by the operating system (OS). Further, software memory access patterns frequently cause accesses to contend for the same row buffer causing thrashing and forcing rows to be closed after only a few accesses, thereby reducing the performance and energy efficiency of memory systems.
In the following description, the use of the same reference numerals in different drawings indicates similar or identical items. Unless otherwise noted, the word “coupled” and its associated verb forms include both direct connection and indirect electrical connection by means known in the art, and unless otherwise noted any description of direct connection implies alternate embodiments using suitable forms of indirect electrical connection as well. Additionally, the terms remap and migrate, and variations thereof, are utilized interchangeably as a descriptive term for relocating.